<?php

use Dingo\Api\Routing\Router;
use \App\Commons\Utils\RouterActionPrefixTools;
use \App\Admin\Controller\App\ProjectController;
use \App\Admin\Controller\App\ProjectTypeController;

/** @var Router $api */
$api = app(Router::class);

$api->group(['prefix' => 'app'], function (Router $api) {//模块前缀

    $api->group(['prefix' => 'project'], function (Router $api) {//控制器前缀,每个控制器一个

        $rapt = new RouterActionPrefixTools(ProjectController::class);

        /** @see ProjectController::page() 应用项目列表 */
        $api->post('page', $rapt->getAction('page'));

        /** @see ProjectController::getAuthLoginPageUrl() 获取应用授权页面url */
        $api->get('{id}/get-auth-login-page-url', $rapt->getAction('getAuthLoginPageUrl'))->where('id', '[0-9]+');


        /** @see ProjectController::publishMiniProgram() 小程序发布 */
        $api->post('{id}/publish-mini-program', $rapt->getAction('publishMiniProgram'))->where('id', '[0-9]+');

        /** @see ProjectController::store() 新建应用项目 */
        $api->post('/', $rapt->getAction('store'));

        /** @see ProjectController::update() 更新应用项目 */
        $api->put('/{id}', $rapt->getAction('update'))->where('id', '[0-9]+');

        /** @see ProjectController::destroy() 删除应用项目 */
            $api->delete('/{id}', $rapt->getAction('destroy'))->where('id', '[0-9]+');

        /** @see ProjectController::getExperienceQrCode() 获取体验版二维码 */
        $api->get('/{id}/get-experience-qr-code', $rapt->getAction('getExperienceQrCode'))->where('id', '[0-9]+');

        /** @see ProjectController::updateDomain() 修改代码模板的服务器域名及业务域名 */
        $api->put('/{id}/domain', $rapt->getAction('updateDomain'))->where('id', '[0-9]+');

        /** @see ProjectController::synServerDomain() 同步服务器域名配置 */
        $api->get('/{id}/syn-server-domain', $rapt->getAction('synServerDomain'))->where('id', '[0-9]+');

        /** @see ProjectController::synWebviewDomain() 同步业务域名配置 */
        $api->get('/{id}/syn-webview-domain', $rapt->getAction('synWebviewDomain'))->where('id', '[0-9]+');

        /** @see ProjectController::updateAuditItemList() 修改审核项列表 */
        $api->put('/{id}/audit-item-list', $rapt->getAction('updateAuditItemList'))->where('id', '[0-9]+');

        /** @see ProjectController::revertCodeRelease() 版本回退 */
        $api->post('/{id}/revert-code-release', $rapt->getAction('revertCodeRelease'))->where('id', '[0-9]+')->name('版本回退');


        /** @see ProjectController::getLatestAuditStatus() 查询最新一次提交的审核状态 */
        $api->get('/{id}/get-latest-audit-status', $rapt->getAction('getLatestAuditStatus'))->where('id', '[0-9]+')->name('查询最新一次提交的审核状态');

        /** @see ProjectController::codeCommit() 上传小程序代码 */
        $api->post('/{id}/code-commit', $rapt->getAction('codeCommit'))->where('id', '[0-9]+')->name('上传小程序代码');

        /** @see ProjectController::miniProgramSubmitAudit() 小程序提交审核 */
        $api->post('/{id}/mini-program-submit-audit', $rapt->getAction('miniProgramSubmitAudit'))->where('id', '[0-9]+')->name('小程序提交审核');

        /** @see ProjectController::miniProgramWithdrawAudit() 小程序审核撤回 */
        $api->post('/{id}/mini-program-withdraw-audit', $rapt->getAction('miniProgramWithdrawAudit'))->where('id', '[0-9]+')->name('小程序审核撤回');

        /** @see ProjectController::miniProgramRelease() 发布已通过审核的小程序 */
        $api->post('/{id}/mini-program-release', $rapt->getAction('miniProgramRelease'))->where('id', '[0-9]+')->name('发布已通过审核的小程序');

        /** @see ProjectController::speedUpAudit() 加急审核申请 */
        $api->post('/{id}/speed-up-audit/{auditId}', $rapt->getAction('speedUpAudit'))->where(['id' => '[0-9]+', 'auditId' => '[0-9]+'])->name('加急审核申请');

        /** @see ProjectController::getMonthSubmitLimitInfo() */
        $api->get('/{id}/get-month-submit-limit-info', $rapt->getAction('getMonthSubmitLimitInfo'))->where(['id' => '[0-9]+'])->name('查询服务商的当月提审限额（quota）和加急次数');

        /** @see ProjectController::getPrivacy() */
        $api->get('/{id}/get-privacy-info', $rapt->getAction('getPrivacy'))->where(['id' => '[0-9]+'])->name('查询小程序隐私');

        /** @see ProjectController::setPrivacy() */
        $api->post('/{id}/set-privacy-info', $rapt->getAction('setPrivacy'))->where(['id' => '[0-9]+'])->name('查询小程序隐私');



    });

    $api->group(['prefix' => 'project-type'], function (Router $api) {//控制器前缀,每个控制器一个

        $rapt = new RouterActionPrefixTools(ProjectTypeController::class);

        /** @see ProjectTypeController::page() 应用项目类型列表 */
        $api->post('page', $rapt->getAction('page'));

        /** @see ProjectTypeController::store() 新增应用项目类型 */
        $api->post('', $rapt->getAction('store'));

        /** @see ProjectTypeController::delete() 删除应用项目类型 */
        $api->delete('/{id}', $rapt->getAction('delete'))->where('id', '[0-9]+');

        /** @see ProjectTypeController::update() 更新应用项目类型 */
        $api->put('/{id}', $rapt->getAction('update'))->where('id', '[0-9]+');

        /** @see ProjectTypeController::listForSelect() 获取可用的应用项目类型下拉列表 */
        $api->get('/list', $rapt->getAction('listForSelect'));

        /** @see ProjectTypeController::updateDomain() 修改应用项目类型的服务器域名及业务域名 */
        $api->put('/{id}/domain', $rapt->getAction('updateDomain'))->where('id', '[0-9]+');

        /** @see ProjectTypeController::updateAuditItemList() 修改审核项列表 */
        $api->put('/{id}/audit-item-list', $rapt->getAction('updateAuditItemList'))->where('id', '[0-9]+');
    });

});
